package com.blqy.fr.common.result;

import lombok.Getter;

/**
 * 统一返回结果状态信息类
 * 规范：
 * - 2000: 成功
 * - 4000~4999: 客户端错误（参数、权限、登录、业务校验等）
 * - 5000~5999: 服务端错误（系统异常、数据库异常等）
 */
@Getter
public enum ResultCodeEnum {

    // ========== 成功 ==========
    SUCCESS(2000, "成功"),

    // ========== 客户端错误（4xxx）==========
    FAIL(4000, "操作失败"),
    PARAM_ERROR(4001, "参数错误"),
    ARGUMENT_VALID_ERROR(4002, "参数校验失败"),
    ILLEGAL_REQUEST(4003, "非法请求"),
    REPEAT_SUBMIT(4004, "请勿重复提交"),

    // 登录 & 认证
    NOT_LOGIN(4010, "未登录"),
    LOGIN_AUTH(4011, "登录已失效，请重新登录"),
    INVALID_TOKEN(4012, "无效的 token"),
    CODE_EXPIRED(4013, "验证码已过期"),
    CODE_ERROR(4014, "验证码错误"),

    // 账号相关
    ACCOUNT_ERROR(4020, "账号不存在或错误"),
    PASSWORD_ERROR(4021, "密码错误"),
    PHONE_CODE_ERROR(4022, "手机验证码错误"),
    ACCOUNT_DISABLED(4023, "账号已被禁用"),
    ACCOUNT_STOP(4024, "账号已停用"),

    // 权限 & 业务限制
    PERMISSION(4030, "没有操作权限"),
    NO_BUY_NOT_SEE(4031, "未购买，无法查看"),
    ACCOUNT_LESS(4032, "账户余额不足"),
    EXIST_NO_EXPIRE_LIVE(4033, "存在未过期的直播，无法操作"),

    // 团队相关
    TEAM_NOT_EXIST(4050, "团队不存在"),
    TEAM_NODE_ERROR(4051, "该节点下有子节点，不可删除"),
    DATA_NOT_FOUND(4052, "你未加入该团队"),

    // 订单 & 支付
    ORDER_SUBMIT_REPEAT(4060, "订单不能重复提交"),
    ACCOUNT_LOCK_REPEAT(4061, "账户已锁定，不可重复操作"),

    // 第三方服务
    XXL_JOB_ERROR(4070, "定时任务调度失败"),
    VOD_FILE_ID_ERROR(4080, "声音媒体 ID 不正确"),

    // ========== 服务端错误（5xxx）==========
    SERVICE_ERROR(5000, "服务异常，请稍后重试"),
    DATA_ERROR(5001, "数据异常"),
    DATABASE_ERROR(5002, "数据库操作失败");

    private final Integer code;
    private final String message;

    ResultCodeEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
}